
////----------//
///**GLOBAL**///
//----------////
//-Global Defines-//

//>McFX Suite General Settings<\\
//-Commentary:The McFX Suite contains various Depth of Field, ambient occlusion and vision changing shader.\nThose shader are derived from MasterEffect.


////--------------------//
///**AMBIENTOCCLUSION**///
//--------------------////
#define USE_AMBIENTOCCLUSION 0 //[SSAO] //-Ambient Occlusion: Enables physically incorrect shading that most newer gen games use. Multiple algorithms available.

//>Global Parameters<\\
#define AO_METHOD 1 //[1:4] //-No description given
#define AO_SHARPNESS 0.70 //[0.05:2.00] //-No description given
#define AO_DEBUG 0 //[0:2] //-No description given
#define AO_LUMINANCE_CONSIDERATION 1 //[0:1] //-No description given
#define AO_LUMINANCE_LOWER 0.3 //[0.0:1.0] //-No description given
#define AO_LUMINANCE_UPPER 0.6 //[0.0:1.0] //-No description given
#define AO_ToggleKey RFX_ToggleKey //[undef] //-

//>SSAO Settings<\\
#define iSSAOSamples 16 //[16:128] //-Amount of samples. Don't set too high or shader compilation time goes through the roof.
#define fSSAOSamplingRange 50.0 //[10.0:50.0] //-SSAO sampling range. High range values might need more samples so raise both.
#define fSSAODarkeningAmount 1.5 //[0.0:5.0] //-Amount of SSAO corner darkening
#define fSSAOBrighteningAmount 1.0 //[0.0:5.0] //-Amount of SSAO edge brightening

//>Raymarch AO Settings<\\
#define iRayAOSamples 24 //[10:78] //-Amount of sample "rays" Higher means more accurate AO but also less performance.
#define fRayAOSamplingRange 0.0005 //[0.0001:0.0200] //-Range of AO sampling. Higher values ignore small geometry details and shadow more globally.
#define fRayAOMaxDepth 0.02 //[0.01:0.20] //-factor to avoid far objects to occlude close objects just because they are besides each other on screen.
#define fRayAOMinDepth 0.00003 //[0.00000:0.00100] //-Minimum depth difference cutoff to prevent (almost) flat surfaces to occlude themselves.
#define fRayAOPower 2.0 //[0.2:5.0] //-Amount of darkening.

//>HBAO Settings<\\
#define iHBAOSamples 9 //[7:36] //-Amount of samples. Higher means more accurate AO but also less performance.
#define fHBAOSamplingRange 2.6 //[0.5:5.0] //-Range of HBAO sampling. Higher values ignore small geometry details and shadow more globally.
#define fHBAOAmount 3.0 //[1.0:10.0] //-Amount of HBAO shadowing.
#define fHBAOClamp 0.1 //[0.0:1.0] //-Clamps HBAO power. 0.0 means full power, 1.0 means no HBAO.
#define fHBAOAttenuation 0.020 //[0.001:0.200] //-Affects the HBAO range, prevents shadowing of very far objects which are close in screen space.

//>SSGI Settings<\\
#define iSSGISamples 9 //[5:24] //-Amount of SSGI sampling iterations, higher means better GI but less performance.
#define fSSGISamplingRange 0.4 //[0.0:80.0] //-Radius of SSGI sampling.
#define fSSGIIlluminationMult 4.5 //[1.0:8.0] //-Multiplier of SSGI illumination (color bouncing/reflection).
#define fSSGIOcclusionMult 0.8 //[0.0:10.0] //-Multiplier of SSGI occlusion.
#define fSSGIModelThickness 10.0 //[0.5:100.0] //-Amount of unit spaces the algorithm assumes the model's thickness. Lower if scene only contains small objects.
#define fSSGISaturation 1.8 //[0.2:2.0] //-Saturation of bounced/reflected colors.


////----------------//
///**DEPTHOFFIELD**///
//----------------////
#define USE_DEPTHOFFIELD 0 //[DOF] //-

//>Global Parameters<\\
#define DOF_METHOD 4 //[1:4] //-1: Ring DOF(Petka/martinsh) 2: Magic DOF 3: GP65CJ042 DOF 4: Matso DOF
#define DOF_FOCUSPOINT float2(0.5,0.5) //[0.0:1.0] //-Screen coordinates of focus point. First value is horizontal, second value is vertical position. 0 is left/upper, 1 is right/lower.
#define DOF_NEARBLURCURVE 0.9 //[0.4:10.0] //-Power of blur of closer-than-focus areas.
#define DOF_FARBLURCURVE 2.0 //[0.4:10.0] //-Elementary, my dear Watson: Blur power of areas behind focus plane.
#define DOF_BLURRADIUS 8.0 //[5.0:50.0] //-Blur radius approximately in pixels. Radius, not diameter.
#define DOF_MANUALFOCUS 1 //[0:1] //-Enables manual focus. 	
#define DOF_MANUALFOCUSDEPTH 0.195 //[0.000:1.000] //-Manual focus depth. 0.0 means camera is focus plane, 1.0 means sky is focus plane.
#define DOF_VIGNETTE 200 //[0:1000] //-Significance of near DoF at edges
#define DoF_ToggleKey RFX_ToggleKey //[undef] //-

//>MATSO DOF Settings<\\
#define bMatsoDOFChromaEnable 1 //[0:1] //-Enables Chromatic Abberation.
#define bMatsoDOFBokehEnable 1 //[0:1] //-Enables Bokeh weighting do define bright light spots and increase bokeh shape definiton.	
#define fMatsoDOFChromaPow 1.4 //[0.2:3.0] //-Amount of chromatic abberation color shifting.
#define fMatsoDOFBokehCurve 8.0 //[0.5:20.0] //-Bokeh curve.
#define fMatsoDOFBokehLight 0.012 //[0.000:2.000] //-Bokeh brightening factor.
#define iMatsoDOFBokehQuality 2 //[1:10] //-Blur quality as control value over tap count.
#define fMatsoDOFBokehAngle 0 //[0:360] //-Rotation angle of bokeh shape.

//>Ring DOF Settings<\\
#define iRingDOFSamples 6 //[5:30] //-Samples on the first ring. The other rings around have more samples
#define iRingDOFRings 4 //[1:8] //-Ring count
#define fRingDOFThreshold 2.5 //[0.8:3.0] //-Threshold for bokeh brightening. Above this value, everything gets much much brighter. 1.0 is maximum value for LDR games like GTASA, higher values work only on HDR games like Skyrim etc.
#define fRingDOFGain 0.1 //[0.1:2.0] //-Amount of brightening for pixels brighter than threshold.
#define fRingDOFBias 0.0 //[0.0:2.0] //-bokeh bias.
#define fRingDOFFringe 0.5 //[0.0:1.0] //-Amount of chromatic abberation

//>Magic DOF Settings<\\
#define iMagicDOFBlurQuality 2 //[1:30] //-Blur quality as control value over tap count. Quality 15 produces 721 taps, impossible with other DOF shaders by far, most they can do is about 150.
#define fMagicDOFColorCurve 3.0 //[1.0:10.0] //-DOF weighting curve.

//>GP65CJ042 DOF Settings<\\
#define iGPDOFQuality 6 //[0:7] //-0 = only slight gaussian farblur but no bokeh. 1-7 bokeh blur, higher means better quality of blur but less fps. 
#define bGPDOFPolygonalBokeh 1 //[0:1] //-Enables polygonal bokeh shape, e.g. POLYGON_NUM 5 means pentagonal bokeh shape. Setting this value to 0 results in circular bokeh shape.
#define iGPDOFPolygonCount 5 //[3:9] //-Controls the amount pf polygons for polygonal bokeh shape. 3 = triangular, 4 = square, 5 = pentagonal etc.	
#define fGPDOFBias 0.0 //[0.0:20.0] //-Shifts bokeh weighting to bokeh shape edge. Set to 0 for even bright bokeh shapes, raise it for darker bokeh shapes in center and brighter on edge.
#define fGPDOFBiasCurve 0.0 //[0.0:3.0] //-Power of Bokeh Bias. Raise for more defined bokeh outlining on bokeh shape edge.
#define fGPDOFBrightnessThreshold 1.8 //[0.6:2.0] //-Threshold for bokeh brightening. Above this value, everything gets much much brighter. 1.0 is maximum value for LDR games like GTASA, higher values work only on HDR games like Skyrim etc.
#define fGPDOFBrightnessMultiplier 2.0 //[0.0:2.0] //-Amount of brightening for pixels brighter than fGPDOFBrightnessThreshold.
#define fGPDOFChromaAmount 0.0 //[0.0:0.4] //-Amount of color shifting applied on blurred areas. 


////------------//
///**HEATHAZE**///
//------------////
#define USE_HEATHAZE 0 //[HeatHaze] //-

//>Heat Haze Settings<\\
#define fHeatHazeSpeed 2.0 //[0.5:10.0] //-Speed of heathaze waves
#define fHeatHazeOffset 5.0 //[0.5:20.0] //-Amount of image distortion caused by heathaze effect
#define fHeatHazeTextureScale 1.0 //[0.5:5.0] //-Scale of source texture, affecting the tile size. Use Heathaze debug effect for better visible effect.
#define fHeatHazeChromaAmount 0.6 //[0.0:2.0] //-Amount of color shift caused by heat haze. Linearly scales with fHeatHazeOffset.
#define bHeatHazeDebug 0 //[0:1] //-Enables raw texture output for debugging purposes. Useful for texture experiments.
#define HeatHaze_TimeOut 0 //[0:100000] //-Defined Toggle Key will activate the shader until time (in ms) runs out. "0" deactivates the timeout feature.
#define HeatHaze_ToggleKey RFX_ToggleKey //[undef] //-


////--------------//
///**FISHEYE_CA**///
//--------------////
#define USE_FISHEYE_CA 0 //[FishEyeCA] //-

//>Fish Eye Chromatic Abberation Settings<\\
#define fFisheyeZoom 0.5 //[0.5:1.0] //-some lens zoom to hide bugged edges due to texcoord modification
#define fFisheyeDistortion 0.15 //[-0.30:0.30] //-distortion of image, fish eye effect
#define fFisheyeDistortionCubic 0.15 //[-0.30:0.30] //-distortion of image, fish eye effect, cube based
#define fFisheyeColorshift -0.03 //[-0.10:0.10] //-Amount of color shifting
#define FishEye_TimeOut 0 //[0:100000] //-Defined Toggle Key will activate the shader until time (in ms) runs out. "0" deactivates the timeout feature.
#define FishEye_ToggleKey RFX_ToggleKey //[undef] //-


////-------//
///**RBM**///
//-------////
#define USE_RBM 0 //[RBM] //-

//>Reflective Bump Mapping Settings<\\
#define fReflectionWideness 100.0 //[25.0:150.0] //-Wideness of reflection in pixels.
#define fReflectionSamples 64 //[32:128] //-Amount of Reflection Samples
#define fReflectionReliefHeight 1.00 //[0.50:2.00] //-Relief Height
#define fReflectionAmount 0.30 //[0.05:1.00] //-Mix factor between bump and original color. 0.0 means no bump applied, 1.0 means pure bump source.
#define fReflectionFresnelFactor 1.00 //[0.00:1.00] //-Lowers reflections when looking at a reflecting surface at a steep angle. Factor determines how much fresnel effect is taken into account.
#define fReflectionFresnelCurve 30.0 //[1.0:30.0] //-Fresnel curve. The higher the value, the lower reflections at steep view angles are.
#define RBM_ToggleKey RFX_ToggleKey //[undef] //-

